@USE
ajax.p

####################################################################################################
# Обработка админки
@main[][sType]
$sType[$form:cache]
# инициализируем ajax прослойку
$oAjax[^ajax::init[
	$.oAuth[$MAIN:objAuth]
	$.oSql[$MAIN:objSQL]
	$.rights[
		$.logon(1)
		$.group[Admins]
	]
	$.log[/../data/log/admin.log]
]]
# для совместимости с spaw
^if(def $oAjax.hRequest.body){$oAjax.hRequest.body[^oAjax.hRequest.body.match[<br>][gi]{<br/>}]}
# -----------------------------------------------------------------------------------------------
# =debug в лом было думать (авто заполнение полного пути и получение ветви и поля is_not_empty блока, работа с директориями объектов) место очень слабое
^if(def $sType){
	^switch[$sType]{
#		объекты
		^case[objects]{
			$oAjax.hRequest.full_path[^MAIN:oEngine.getFullPath[$oAjax.hRequest.parent_id;$oAjax.hRequest.path]]
			$oAjax.hRequest.thread_id[^MAIN:oEngine.getThreadId[$oAjax.hRequest.parent_id;$oAjax.hRequest.id]]
			^switch[$oAjax._sAction]{
				^case[insert]{^createObject[$oAjax.hRequest.full_path]}
				^case[delete]{
					^if(^oAjax.hRequest.object_id.pos[,] > 0){
					$_tWhere[^oAjax.hRequest.object_id.split[,]]
					^_tWhere.menu{
						^deleteObject[$MAIN:oEngine.OBJECTS_HASH.[$_tWhere.piece].full_path]
				}}}
				^case[update]{
					^moveObject[^MAIN:oEngine.OBJECTS_HASH.[$oAjax.hRequest.object_id].full_path.trim[end;/];^oAjax.hRequest.full_path.trim[end;/]]
				}
			}
		}
#		блоки
		^case[blocks]{
			^if(def $oAjax.hRequest.data){$oAjax.hRequest.is_not_empty(1)}{$oAjax.hRequest.is_not_empty(0)}
		}
	}
}

# =debug в лом было думать (обработка прав) место очень слабое
^if(def $oAjax.hRequest.rights_read){$oAjax.hRequest.rights($oAjax.hRequest.rights    + ($oAjax.hRequest.rights_read))      ^oAjax.hRequest.delete[rights_read]}
^if(def $oAjax.hRequest.rights_edit){$oAjax.hRequest.rights($oAjax.hRequest.rights    + ($oAjax.hRequest.rights_edit*2))    ^oAjax.hRequest.delete[rights_edit]}
^if(def $oAjax.hRequest.rights_delete){$oAjax.hRequest.rights($oAjax.hRequest.rights  + ($oAjax.hRequest.rights_delete*4))  ^oAjax.hRequest.delete[rights_delete]}
^if(def $oAjax.hRequest.rights_comment){$oAjax.hRequest.rights($oAjax.hRequest.rights + ($oAjax.hRequest.rights_comment*8))    ^oAjax.hRequest.delete[rights_comment]}
^if(def $oAjax.hRequest.rights_supervisory){$oAjax.hRequest.rights($oAjax.hRequest.rights + ($oAjax.hRequest.rights_supervisory*128))   ^oAjax.hRequest.delete[rights_supervisory]}

# установка пароля пользователю
^if(def $oAjax.hRequest.passwd){$oAjax.hRequest.passwd[^MAIN:objAuth.cryptPassword[$oAjax.hRequest.passwd]]}

# обработка тип пользователя(группа)
^if(^oAjax.hRequest.auth_parent_id.int(0)){
	^MAIN:objSQL.void{DELETE FROM auser_to_auser WHERE auser_id="$oAjax.hRequest.auser_id"}
	^MAIN:objSQL.void{INSERT auser_to_auser (auser_id, parent_id) VALUES ('$oAjax.hRequest.auser_id' , '$oAjax.hRequest.auth_parent_id') }
}
	^oAjax.hRequest.delete[auth_parent_id]
^rem{
=debug
# при необходимости удаление файла _cache.cfg
^try{^if(def $oAjax.hRequest.cache_time){
	^MAIN:oEngine.DeleteFiles[$MAIN:CacheDir]
	^file:delete[${MAIN:CacheDir}_cache.cfg]}
}{$exception.handled(1)}}

# раз уж сюда дошли то удалим весь кэш
^dir_delete[^MAIN:CacheDir.trim[end;/];$.is_recursive(1)]

# попытка выполнения действия
^oAjax.go[]

# а это опять блоки и это очень криво =debug
$_tTemp[^oAjax.hRequest._keys[]]
^_tTemp.menu{
	^if(^_tTemp.key.pos[mode_] >= 0){
		$_iTemp[^_tTemp.key.mid(5)]
		^if($oAjax.hRequest.block_id_$_iTemp ne '0'){
			^MAIN:objSQL.void{
				INSERT 
					m_block_to_object
					(object_id, block_id, sort_order, mode)
				VALUES
					('$oAjax.hRequest.object_id','$oAjax.hRequest.block_id_$_iTemp','$oAjax.hRequest.sort_order_$_iTemp','$oAjax.hRequest.mode_$_iTemp')
				}
		}
	}
}
#end @main[][_hRequest]

####################################################################################################
# Создание объектов
@createObject[sFullPath][_sDummy]
$_sDummy[@dummy[]
^$result[bla-bla]]
^_sDummy.save[${sFullPath}index.html]
#end @createObject[sFullPath][_sDummy]

####################################################################################################
# Перемещение объектов 
@moveObject[sOldFullPath;sNewFullPath]
^if($sOldFullPath ne $sNewFullPath){^file:move[$sOldFullPath;$sNewFullPath]}
#end @moveObject[sOldFullPath;sNewFullPath]

####################################################################################################
# Удаление объектов
@deleteObject[sFullPath]
^dir_delete[$sFullPath]
#end @deleteObject[sFullPath]

####################################################################################################
# Присваивание блоков
@blocks[]
	^oAjax.go[]
#end 